#pragma once
#include "Dllexport.h"
namespace NBGUI
{


	struct GUIAPI Rect
	{
		Rect(int _x = 0,int _y = 0,int _w = 0,int _h = 0):x(_x),y(_y),w(_w),h(_h)
		{}
		int x,y,w,h; //position and width, height

	};

	template <typename tp>
	struct GUIAPI vec2
	{
		vec2(tp _x = 0, tp _y= 0):x(_x),y(_y)
		{}
		~vec2(){}
		tp x,y;
	};
	typedef vec2<int> vec2i;
	typedef vec2<float> vec2f;

	template <typename tp>
	struct GUIAPI vec3
	{
		vec3(tp _x= 0, tp _y= 0, tp _z= 0):x(_x),y(_y),z(_z)
		{}
		inline void normalize()
		{
			tp temp = x*x + y*y + z*z;
			if(temp == 0)return;
			x/= temp;
			y/= temp;
			z/= temp;
		}
		tp x,y,z;
	};
	typedef vec3<int> vec3i;
	typedef vec3<float> vec3f;

	template <typename tp>
	struct GUIAPI vec4
	{
		vec4(tp _x= 0, tp _y= 0, tp _z= 0, tp _w= 0):x(_x),y(_y),z(_z),w(_w)
		{}

		tp x,y,z,w;
	};
	typedef vec4<float> vec4f;

	struct GUIAPI Vertex
	{
		Vertex(){}
		vec3f pos;
		vec2f coord;
		vec4f color;
		

	};
}